(function() { // Localize jQuery variable var jQuery, _domain = document.domain; /******** Load jQuery if not present *********/ if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.7.1') { var script_tag = document.createElement('script'); script_tag.setAttribute("type","text/javascript"); script_tag.setAttribute("src","https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"); // var script_tag_tmpl = document.createElement('script'); // script_tag_tmpl.setAttribute("type","text/javascript"); // script_tag_tmpl.setAttribute("src","https://ajax.aspnetcdn.com/ajax/jquery.templates/beta1/jquery.tmpl.min.js"); if (script_tag.readyState) { script_tag.onreadystatechange = function () { // For old versions of IE if (this.readyState == 'complete' || this.readyState == 'loaded') { scriptLoadHandler(); } }; } else { script_tag.onload = scriptLoadHandler; } // Try to find the head, otherwise default to the documentElement (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag); // (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag_tmpl); } else { // The jQuery version on the window is the one we want to use jQuery = window.jQuery; main(); } /******** Called once jQuery has loaded ******/ function scriptLoadHandler() { // Restore $ and window.jQuery to their previous values and store the // new jQuery in our local jQuery variable jQuery = window.jQuery.noConflict(true); // Call our main function main(); } /* * * * Our main function * * */ function main() { var SeriesLib = (function () { var pub = {}, _apir="https://api.athlinks.com", _apirLocal="http://localhost:60003/", _seriesid = '', _scoreType, _eventid = 0, _sortBy = 'p', _pageSize = 50, _page = 1, _eventGroupID = 0, _filter = '', _filterval = '', _strPaging = undefined, _strClasses = undefined, _pageContent = '', _canvasid = 'athlinks-raceresult-widget'; pub.Setup = function(){ jQuery('#'+_canvasid).html(_pageContent); }; pub.GetSeries = function(seriesID){ _seriesid = seriesID; var c = ''; var jsonp_url = _apir + "/results/series?seriesid=" + _seriesid + "&format=json&key=c6de640f56d02f5d56ce22d088a06004&callback=?"; jQuery.getJSON(jsonp_url,function(data){ _scoreType = data.ScoreType; SeriesLib.GetStandings('p','','',0,1); c = '

' + data.Name + '

Points Last Updated: ' + data.LastCalcDateString + '
'; Inject("athlinks-raceresult-widget-athlinks-event-info",c); }); }; pub.GetStandings = function(sortBy, filter, filterVal, eventGroupID, page){ _seriesid = '1437'; _sortBy = sortBy; _filter = filter; _filterval = filterVal; _page = page; _eventGroupID = eventGroupID; var c = ''; jQuery("#athlinks-raceresult-widget-resTbl").css({opacity:.25}); Inject("athlinks-raceresult-widget-athlinks-fields",""); var jsonp_url = _apir + "/results/seriesstandings?seriesid=" + _seriesid + "&filter=" + _filter + "&filtervalue=" + _filterval + "&eventGroupID=" + _eventGroupID + "&page=" + _page + "&pageSize=" + _pageSize + "&format=json&key=c6de640f56d02f5d56ce22d088a06004&callback=?"; jQuery.getJSON(jsonp_url,function(data){ _strPaging = GeneratePaging(data); if(_filter.toLowerCase()!=='n'||_filterval===''){c += _strPaging;} c += '
Filter by:
Find by Name:
'; c += ''; jQuery.each(data.List, function(index, value){ c += ''; }); c += ''; Inject("athlinks-raceresult-widget-athlinks-results-info",c); GenerateClasslist(); GenerateEventGrouplist(); if(_filterval !== ''){jQuery("#tbAL_Search").trigger("keyup");jQuery("#btnAL_Clear").show();}; jQuery('html, body').animate({scrollTop: jQuery("#athlinks-raceresult-widget-athlinks-event-info").offset().top}, 200); }); track('c6de640f56d02f5d56ce22d088a06004','series/GetStandings','seriesid:'+_seriesid+';filter:'+_filter+';filterval:'+_filterval+';page='+_page); }; pub.ShowSeriesResults = function(btn, racerID) { jQuery(btn).html(''); var c = ''; var jsonp_url = _apir + "/results/seriesresult?seriesid=" + _seriesid + "&racerid=" + racerID + "&key=c6de640f56d02f5d56ce22d088a06004&format=json&callback=?"; jQuery.getJSON(jsonp_url,function(data){ var resultsHtml = ''; jQuery.each( data, function(){ resultsHtml += '' + ( this.EventName.length > 30 ? this.EventName.substring(0,30) + '...' : this.EventName ) + '' + ( _scoreType !== 3 && _scoreType !== 4 ? this.TicksString : '' ) + '' + this.RankO + '' + this.RankG + '' + ( _scoreType !== 3 && _scoreType !== 4 ? this.Points : this.TicksString ) + '' + ( _scoreType == 3 && _scoreType == 4 && this.TimeRank > 0 ? "" : "" ) + ''; }); jQuery("#athlinks-raceresult-widget-resrow-" + racerID).after(resultsHtml).show(); jQuery(btn).html('-'); }); track('c6de640f56d02f5d56ce22d088a06004','series/GetResult','seriesid:'+_seriesid+';racerid:'+racerID); }; pub.ShowRacesInSeries = function(seriesID){ _seriesid = seriesID; var c = ''; var jsonp_url = _apir + "/raceseries/events/?seriesid=" + _seriesid + "&key=c6de640f56d02f5d56ce22d088a06004&format=json&callback=?"; jQuery.getJSON(jsonp_url,function(data){ jQuery("#btn_ToggleView").html("Show Standings"); var resultsHtml = '
Showing ' + data.MasterCount + ' Events in Series
'; var resultsUrl = 'widget.aspx?raceid=%%raceid%%&widget=results'; jQuery.each(data.List, function(){ var courseID = this.Courses[0] ? this.Courses[0].CourseID : 0; resultsHtml += '
Region: ' + this.GroupName + '
' + this.City + ', ' + this.StateProvAbbrev + ', ' + this.CountryID + '
' + FormatJSONDate(this.RaceDate) + '
'; }); resultsHtml += "
"; jQuery("#athlinks-raceresult-widget-athlinks-results-info").html(resultsHtml); }); track('c6de640f56d02f5d56ce22d088a06004','series/GetRaces','seriesid:'+_seriesid); }; pub.SafeHash = function(val,def){ return val===undefined?def:val; }; pub.FormatNumber = function (nStr) { nStr += ''; var x = nStr.split('.'); var x1 = x[0]; var x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }, function RacerLink(iM, rID, eID){ return 'https://athlinks.com/result/' + _eventid + '/' + _courseid + '/' + rID + '/' + eID; } function AddCommas(nStr){ nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while(rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; }; function Inject(target,content){ jQuery('#'+target).html(content); }; function FormatJSONDate(jsonDate,tiny) { var date = eval(jsonDate.replace(/\/Date\((\d+(-\d+)?)\)\//gi, "new Date($1)")); return tiny === true ? dateFormat(date, "mm/dd/yy") : dateFormat(date, "ddd, mmm ddS, yyyy"); }; /* Formatters */ var dateFormat = function () { var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g, timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g, timezoneClip = /[^-+\dA-Z]/g, pad = function (val, len) { val = String(val); len = len || 2; while (val.length < len) val = "0" + val; return val }; return function (date, mask, utc) { var dF = dateFormat; if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) { mask = date; date = undefined } date = date ? new Date(date) : new Date; if (isNaN(date)) throw SyntaxError("invalid date"); mask = String(dF.masks[mask] || mask || dF.masks["default"]); if (mask.slice(0, 4) == "UTC:") { mask = mask.slice(4); utc = true } var _ = utc ? "getUTC" : "get", d = date[_ + "Date"](), D = date[_ + "Day"](), m = date[_ + "Month"](), y = date[_ + "FullYear"](), H = date[_ + "Hours"](), M = date[_ + "Minutes"](), s = date[_ + "Seconds"](), L = date[_ + "Milliseconds"](), o = utc ? 0 : date.getTimezoneOffset(), flags = { d: d, dd: pad(d), ddd: dF.i18n.dayNames[D], dddd: dF.i18n.dayNames[D + 7], m: m + 1, mm: pad(m + 1), mmm: dF.i18n.monthNames[m], mmmm: dF.i18n.monthNames[m + 12], yy: String(y).slice(2), yyyy: y, h: H % 12 || 12, hh: pad(H % 12 || 12), H: H, HH: pad(H), M: M, MM: pad(M), s: s, ss: pad(s), l: pad(L, 3), L: pad(L > 99 ? Math.round(L / 10) : L), t: H < 12 ? "a" : "p", tt: H < 12 ? "am" : "pm", T: H < 12 ? "A" : "P", TT: H < 12 ? "AM" : "PM", Z: utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""), o: (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4), S: ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10] }; return mask.replace(token, function ($0) { return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1) }) } } (); dateFormat.masks = { "default": "ddd mmm dd yyyy HH:MM:ss", shortDate: "m/d/yy", mediumDate: "mmm d, yyyy", longDate: "mmmm d, yyyy", fullDate: "dddd, mmmm d, yyyy", shortTime: "h:MM TT", mediumTime: "h:MM:ss TT", longTime: "h:MM:ss TT Z", isoDate: "yyyy-mm-dd", isoTime: "HH:MM:ss", isoDateTime: "yyyy-mm-dd'T'HH:MM:ss", isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'" }; dateFormat.i18n = { dayNames: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], monthNames: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] }; Date.prototype.format = function (mask, utc) { return dateFormat(this, mask, utc) }; function GenerateCourseList(data, courseID){ var ret = ''; jQuery.each(data.Courses, function(index, value){ ret += ''; }); return ''; }; function GeneratePaging(data){ var ret = '', prev = '', next = '', totPg = 0; totPg = (1+(Math.floor(data.MasterCount/_pageSize))); //if( _page > 1 ){prev = '';} for( var p = 1; p <= totPg; p++ ){ret += '';} //if( _page < totPg ){next = '';} return '
Show Pages:
' + ( ( ret === '' ) ? '' : prev + '' + next ) + '
'; }; function GenerateClasslist(){ var jsonp_url = _apir + "/raceseries/classes/" + _seriesid + "/?format=json&key=c6de640f56d02f5d56ce22d088a06004&callback=?", classes = ''; jQuery.getJSON(jsonp_url,function(data){ var selectedM=(_filterval ==='M' ? ' selected="true"' : ""); var selectedF=(_filterval ==='F' ? ' selected="true"' : ""); classes += ''; classes += ''; classes += ''; jQuery.each(data, function(index, value){ if( value.Key.toLowerCase().indexOf("u:") === -1 ){ var selected = ( _filterval === value.Key ? ' selected="true"' : ""); classes += ''; } }); _strClasses = ""; jQuery("#divClassList").html(_strClasses); }); } function GenerateEventGrouplist(){ var jsonp_url = _apir + "/results/series?seriesid=" + _seriesid + "&format=json&key=c6de640f56d02f5d56ce22d088a06004&callback=?", classes = ''; jQuery.getJSON(jsonp_url,function(data){ if (!data.EventGroups || data.EventGroups.MasterCount < 2){ return; } classes += ''; jQuery.each(data.EventGroups.List, function(index, value){ var selected = ( parseInt(_eventGroupID) === value.GroupID ? ' selected="true"' : ""); classes += ''; }); _strClasses = ""; jQuery("#divEventGroup").html(_strClasses); }); } function DrawClaim(name,age,state){ return 'Claim'; }; function Smaller(a,b){ return a>b?b:a; }; return pub; } ()); // Doc on Ready.. jQuery(document).ready(function() { var cssurl = "https://s3.amazonaws.com/athlinks_static/styles/athlinks-widget-results.css"; var css_link = jQuery("", { /******* Load CSS *******/ rel: "stylesheet", type: "text/css", href: cssurl }); if( !jQuery("link[href='" + cssurl + "']").length ){ css_link.appendTo('head'); } // On Sort jQuery(document).on("click","#btnSort-C",function(e){ SeriesLib.GetStandings('c','','',0,1); }); jQuery(document).on("click","#btnSort-P",function(e){ SeriesLib.GetStandings('p','','',0,1); }); jQuery(document).on("click","#btnSort-N",function(e){ SeriesLib.GetStandings('n','','',0,1); }); // On Search jQuery(document).on("keyup keypress","#tbAL_Search",function(e){ var code = e.keyCode || e.which; if( e !== undefined && code === 13 ){ e.preventDefault(); var t = jQuery(this).attr("value"); if( t.length > 2 ){ SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'n',t,0,1); } return false; }else{ if( jQuery(this).attr("value")!=='' ){ jQuery("#btnAL_Search").removeAttr("disabled"); }else{ jQuery("#btnAL_Search").attr("disabled","disabled"); } } }); jQuery(document).on("click","#btnAL_Search",function(e){ e.preventDefault(); SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'n',jQuery("#tbAL_Search").attr("value"),0,1); }); jQuery(document).on("click","#btnAL_Clear",function(){ SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'','',0,1); }); jQuery(document).on("change","#lstClass",function(){ var classID = jQuery(this).val(); jQuery(this).val(); if( classID !== '' ){ var type = classID.indexOf(':') > -1 ? "a" : "g"; SeriesLib.GetStandings(jQuery("#fldSortBy").val(),type,classID,jQuery("#fldEventGroupId").val(),1); } }); jQuery(document).on("change","#lstEventGroup",function(){ var eventGroupID = jQuery(this).val(); SeriesLib.GetStandings(jQuery("#fldSortBy").val(),jQuery("#fldFilter").val(),jQuery("#fldFilterVal").val(),eventGroupID,1); }); jQuery(document).on("click",".pager",function(){ var pg = jQuery(this).attr("title"), id = jQuery(this).attr("id").toLowerCase(); SeriesLib.GetStandings(jQuery("#fldSortBy").val(),jQuery("#fldFilter").val(),jQuery("#fldFilterVal").val(),jQuery("#fldEventGroupId").val(),pg); }); jQuery(document).on("click","#athlinks-raceresult-widget-resTbl > tbody > tr.res",function(){ var btn = jQuery(this).find("td.expand>div.resBtn"); var racerID = jQuery(btn).attr("id").replace('rsBtn',''); if(jQuery(btn).html() === '+'){ SeriesLib.ShowSeriesResults(btn,racerID); }else{ if( jQuery(btn).closest("tr.res").next("tr.raceres").length > 0 ) { jQuery(btn).closest("tr.res").nextAll("tr.raceres").hide(); jQuery(btn).html("+"); } } }); jQuery(document).on("change","#lstPaging",function(){ var pg = jQuery(this).val(); var classID = jQuery('#lstClass').val(), type = ''; if(classID != '') { type = classID.indexOf(':') > -1 ? "a": "g"; } SeriesLib.GetStandings(jQuery("#fldSortBy").val(), type, classID, 0, pg); }); jQuery(document).on("click","#btnToggleView",function(){ if( jQuery(this).html() === "Show Events" ){ jQuery(this).html("Show Standings"); SeriesLib.ShowRacesInSeries(1437); } else { jQuery(this).html("Show Standings"); SeriesLib.GetStandings(jQuery("#fldSortBy").val(),'','',0,1); } }); SeriesLib.Setup(); SeriesLib.GetSeries(1437); // SeriesLib.GetStandings('p','','',0,1); }); } // End main(); function track(key,p,ipc){ var track = 'https://www.google-analytics.com/__utm.gif?&utmwv=1&utmn=' +Math.floor(Math.random()*99999) + '&utmhn=' + _domain + '&utmr=http://www.referer.com/referer.html' + '&utmp=' + p + '&utmipc=' + ipc + '&utmtst=' + key + '&utmac=UA-2421114-3' + '&utmcc=__utma%3D999.2146696535.999.999.999.1%3B'; jQuery.get(track); } })(); // We call our anonymous function immediately